#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QpushButton>

class MainWindow : public QMainWindow   //派生类继承Qmainwindow的公共部分
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);  //构造函数
    ~MainWindow();  //析构函数
signals:        //信号的专用修饰？？
    void pushButtonTextChange();    // 信号只需要声明 不需要初始化

public slots:

    void changeButtonText();    //声明一个槽函数

    void pushButtonClicked();   //声明一个按钮点击槽函数

private:
    QPushButton *pushButton;    //声明一个按钮的对象

};

#endif // MAINWINDOW_H




















#include "mainwindow.h"
#include <QApplication>
#include <QMainWindow>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    /* 设置窗体的宽为 800,高为 480 */
    this->resize(800,480);

    /* 实例化 pushButton 对象 */
    pushButton = new QPushButton(this);

    /* 调用 setText()方法设定按钮的文本 */
    pushButton->setText("我是一个按钮");


    connect(pushButton, SIGNAL(clicked()), this,        //链接信号与槽
            SLOT(pushButtonClicked()));

    connect(this, SIGNAL(pushButtonTextChange()), this,  //链接信号与槽
            SLOT(changeButtonText()));
}

MainWindow::~MainWindow()
{

}


 /*实现按钮点击槽函数 */

void MainWindow::pushButtonClicked()
{
 /* 使用 emit 发送信号 */
 emit pushButtonTextChange();
}


 /* 实现按钮文本改变的槽函数 */
 void MainWindow::changeButtonText()
 {
     /* 在槽函数里改变按钮的文本 */
     pushButton->setText("被点击了！ ");


 }








